package LibDL.recommender;

import LibDL.core.nn.Module;
import net.librec.common.LibrecException;
import net.librec.data.DataModel;
import net.librec.math.structure.DataSet;
import net.librec.recommender.item.RecommendedList;
import org.jetbrains.annotations.Nullable;

import java.util.List;

@Deprecated
public interface Recommender {

    List<Float> predict(int user, @Nullable List<Integer> item_ids);

    void generateDataModel() throws LibrecException;

    /**
     * get DataModel
     *
     * @return data model
     */
    DataModel getDataModel() throws LibrecException;

    Module getModule();

    /**
     * initialization module, optimizer and so on
     * */
    void initModule();

    /**
     * @param verbose whether to output information
     * */
    void trainModel(boolean verbose);

//    RecommendedList recommendRating(DataSet predictDataSet) throws LibrecException;

    RecommendedList recommendRank();

    RecommendedList recommendRank(List<Integer> user_ids);
}
